package com.pratices.cookie.util;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.text.SimpleDateFormat;

/**
 * 1. 接收POST请求中的 请求体里的 JSON字符串 转换为Java中的对象(a. 自定义的类 b. Map)
 * 2. 响应结果为JSON字符串，将对象转换为JSON字符串，通过Writer做写出
 */
public class JsonUtil {

    private static final ObjectMapper objectMapper = new ObjectMapper();
    static {
        // 设置日期格式（全局）
        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
        // 如果特定的字段要指定日期格式 => @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") timzone配置的是时区信息
    }

    public static String toJson(Object obj) {
        String jsonStr = null;
        try {
            jsonStr = objectMapper.writeValueAsString(obj);
        } catch (JsonProcessingException e) {
            throw new RuntimeException(e);
        }
        return jsonStr;
    }

    public static <T> T parseJson(String jsonStr, Class<T> clazz) {
        T obj = null;
        try {
            obj = objectMapper.readValue(jsonStr, clazz);
        }catch (Exception e) {
            throw new RuntimeException(e);
        }
        return obj;
    }
}
